The present disclosure relates to propagating data in a multi-shard database system.
Modern database systems provide rapid information storage, searching, and retrieval capabilities. These databases often interact with or are part of computer applications that collect, update, analyze, or report on large sets of data. Where those data sets are so large, and the demand for access thereto is so high that performance or storage thresholds of a single server are reached, data can be distributed across multiple servers to provide additional performance and storage capabilities. Each segment in such a distributed database system is known as a “shard”. Functions of the individual shards can be assigned according to a strategy designed to distribute user loads and optimize performance of the database system.
Distributing or “sharding” the database in such a manner can overcome performance and storage limitations, but this segmentation introduces problems where database transactions require access to data that is stored in more than one shard (a cross-shard transaction). Cross-shard transactions can be resource intensive, and as a result, performance of the system can be hindered when such transactions take place. To handle cross-shard transactions, a distributed transaction mechanism (such as a two-phase commit) is conventionally used.